﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using PontoAtividadeUtilidades;

namespace PontoAtividadeReportDotNet
{
    public partial class RelatorioPontoForm : Form
    {
        public RelatorioPontoForm()
        {
            InitializeComponent();

            fdDataInicial.Value = DateTime.Now;
            fdDataFinal.Value = DateTime.Now;
        }

        private void botaoGerarRelatorio_Click(object sender, EventArgs e)
        {
            try
            {
                if (validarDadosFormulario())
                {
                    if (botaoRadioHTML.Checked)
                    {
                        gerarHTML(fdDataInicial.Value, fdDataFinal.Value);
                    }
                    else if (botaoRadioXML.Checked)
                    {
                        gerarXML(fdDataInicial.Value, fdDataFinal.Value);
                    }
                }
            }
            catch (FileNotFoundException ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void gerarHTML(DateTime dataInicial, DateTime dataFinal)
        {
            String nomeArquivoRelatorioGerado = RelatorioAtividade.gerarRelatorioHTML(dataInicial, dataFinal);

            FileInfo infoArquivo = new FileInfo(Constantes.DIRETORIO_RELATORIO_GERADO + nomeArquivoRelatorioGerado);

            nomeArquivoRelatorioGerado = "file:\\\\\\" + infoArquivo.DirectoryName + "\\" + nomeArquivoRelatorioGerado;

            RelatorioHTMLGeradoForm relatorioGeradoForm = new RelatorioHTMLGeradoForm();
            relatorioGeradoForm.URLValor = new Uri(nomeArquivoRelatorioGerado, System.UriKind.Absolute);
            relatorioGeradoForm.ShowDialog(this);
        }

        private void gerarXML(DateTime dataInicial, DateTime dataFinal)
        {
            String xmlGerado = RelatorioAtividade.gerarRelatorioXML(dataInicial, dataFinal);

            RelatorioXMLGeradoForm relatorioGeradoForm = new RelatorioXMLGeradoForm();
            relatorioGeradoForm.CampoXMLGeradoValor = xmlGerado;
            relatorioGeradoForm.ShowDialog(this);
        }

        private void calendario_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                this.botaoGerarRelatorio_Click(sender, e);
            }
        }

        private bool validarDadosFormulario()
        {
            bool resultado = true;
            string logErro = "";

            if (!botaoRadioHTML.Checked && !botaoRadioXML.Checked)
            {
                logErro += "* Preencher uma das opções do relatório: HTML ou XML.";
            }

            if (DateTime.Compare(fdDataInicial.Value, fdDataFinal.Value) > 0)
            {
                if (!String.IsNullOrEmpty(logErro))
                {
                    logErro += "\n";
                }

                logErro += "* A data inicial é maior que a data final.";
            }

            if (!String.IsNullOrEmpty(logErro))
            {
                resultado = false;
                MessageBox.Show(logErro);
            }

            return resultado;
        }

    }
}
